Printers associated with computers receive print jobs transmitted from the computers. The print jobs comprise data (character codes and graphic elements encoded in bit maps, etc.) and, usually, instructions encoded in a specific printer command language. However, when only data and certain standard instructions (tabs, line feeds, etc.) are transmitted, the print jobs are said to be in the form of "pure" text.
A printer command language is a set of instructions understood by a printer. It may include information about positioning of text and/or graphics and options to control the attributes (e.g., font style, font size, color, density) of the printed information. Examples of such languages are Postscript, HP PCL, HP GL, and Impress. A printer command language is considered to consist only of the defined command sequences and the specified number of parameters associated therewith. In a print job, the printer command sequences are interspersed with data.
In order for a printer to process a print job encoded in a particular printer command language, it must have a combination of hardware and software capable of understanding and processing the printer command language. Typically, the printer has a controller which itself is a digital computer programmed with interpreters or emulations for processing more than one command language. For example, the printer controller may first generate a bit map stored in its page memory from the print job. Other apparatus, with reference to the bit map, produces a hard copy. Examples of computer printers that are capable of converting bit maps to hard copy are laser printers, thermal printers and dot matrix printers.
Applications programs that run on host computers are end-user programs (or frequently used utility programs) which generate print jobs. Applications programs generate print jobs using a printer command language or in the form of pure text. It is likely that different applications programs used with a given host computer use different printer command languages and/or pure text output.
A print job must be transmitted to a printer that can interpret the language in which the job is encoded and, if the printer can handle more than one printer command language, the correct interpreter or emulation must be selected.
In the past, three methods have be used to assure that a print job is transmitted to a printer prepared to interpret the print job: 1) Users or host software selected from among a variety of printers connected to a computer system, each of which can handle print jobs encoded in a single printer command language. 2) Switches of some form are set manually upon the printer capable of handling more than one printer command language in order to select the printer command language desired by the user. To change the printer command language processed by a printer, the switches must be altered and the printer reset in some fashion. 3) Additional command sequences or job headers may be defined by the printer manufacturer to be sent at the start of print jobs to select a desired printer command language.
The prior methods of directing a print job to a printer prepared to receive it have shortcomings. Multiple printers each dedicated to one printer command language can be an expensive solution. A printer must be purchased for each language Moreover, some printers may be heavily used while others sit idle. The use of configuration switches to select a printer command language may lead to resource contention as the users of one printer command language may inhibit the use by others. The user closest to the printer can dominate use of the printer because, to assure that a printer is configured to receive a print job, a trip to the printer is required. The use of job headers involves non-standard command sequences across printers made by different manufacturers. It also involves modification of existing application software to generate the headers for each print job.